Network nodes are capable of receiving and forwarding packets. Network nodes may take form in one or more routers, one or more bridges, one or more switches, one or more servers, or any other suitable communications processing device. A packet is a formatted unit of data that typically contains control information and payload data. Control information may include, for example: source and destination IP addresses, error detection codes like checksums, sequencing information, and the like. Control information is typically found in packet headers and trailers, and payload data is typically found in between the headers and trailers.
Packet forwarding involves decision processes that, while simple in concept, can be complex. Since packet forwarding decisions are handled by nodes, the total time required to perform packet forwarding decision processes can become a major limiting factor in overall network performance.
One complexity that can arise regarding packet forwarding is determining how to handle changing network conditions. For example, if a given node decides to forward a packet across a given link to another node, but subsequently detects that the link has unexpectedly become unavailable, the given node is faced with the prospect of deciding on an alternate path for the packet. This is known as rerouting the packet.